// pages/a/a.js
const db = wx.cloud.database()
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // true为播放，false为暂停
    isPlay:false,
    bgMusic:'',
    musicInfo:{},
    // 当前音乐的总时长--格式
    duration: '00:00',
    // 当前音乐已播放的总时长
    currentDuration:'00:00',
    // 未格式的音乐总时长
    durationS:0,
    // 当前播放的音乐索引
    musicIndex: 0,
    // 当前音乐播放的位置
    currentTime:0,
    // 当前音乐的百分之一的时长
    musicCentinormal:0, 
    // false为切换歌曲了，必须再次获取歌曲总时长，即要在onTimeUpdate获取音乐总时长
    firstPlayMusic:true
  },

  // 设置音乐相关信息的函数
  async editMusic(index){

    let musicInfo = await db.collection('music').where({
      id:Number.parseInt(index)
    }).get()
    // console.log(musicInfo1,'musoInfo',index,'index')
    // return
    this.setData({
      bgMusic:wx.createInnerAudioContext() 
    })
    // let musicInfo = list.find((val,currentIndex)=> index == currentIndex)
    this.setData({
      musicInfo:musicInfo.data[0]
    })
    // 设置音乐和获取总时长
    this.data.bgMusic.src = musicInfo.data[0].musicSrc
    setTimeout(()=>{
      this.s_to_hs(this.data.bgMusic.duration)
      if(this.data.isPlay){
        this.data.bgMusic.play()
      }
    },1500)

    // 监听音乐各种事件
    this.data.bgMusic.onPlay(()=>{
      console.log('播放')
    })
    this.data.bgMusic.onWaiting(()=>{
      console.log('加载')
    })
    this.data.bgMusic.onPause(()=>{
      console.log('暂停')
    })
    this.data.bgMusic.onCanplay(()=>{
      console.log(this.data.bgMusic.duration,'onCanplay')
    })
    this.data.bgMusic.onTimeUpdate(()=>{
      // 切换歌曲了，必须再次获取歌曲总时长
      if(!this.data.firstPlayMusic){
        this.s_to_hs(this.data.bgMusic.duration)
      }
      // 播放结束
      if(this.data.currentTime >= 99){
        // 自动播放下一首
        this.selectMusic({currentTarget:{dataset:'next'}})
        return
      }
      // 计算slider组件的值为1时相当于音乐总时长的多少
      let  oneTime = Math.floor(this.data.bgMusic.duration) / 100 
      let currentTime = this.data.bgMusic.currentTime / oneTime
      this.setData({currentTime})
      // 格式化当前已播放音乐的总时间
      this.s_to_hs(this.data.bgMusic.currentTime,true)
    })

  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

    let id = options.id
    // 保存当前歌曲索引
    this.setData({musicIndex:id})
    // 设置歌曲信息
    this.editMusic(id)

  },
  // 格式化总时长
  s_to_hs(s,flag){
    this.setData({durationS:Math.floor(s)})
    let h = Math.floor(s/60);
    s = s%60;
    h += '';
    h = ( h.length==1 ) ? '0' + h : h;
    s = ( s.length==1) ? '0' + s : s;
    s = Math.floor(s)
    if(s < 10){
      s = '0'+s
    }
    if(!flag){
      //格式化的是音乐的总时长
      this.setData({duration:h+':'+s})
      // 设置当前音乐百分之一的总时长数
      this.setData({
        musicCentinormal: Math.floor(this.data.bgMusic.duration) / 100 
      })
    }else{
      // 格式化的是当前已播放音乐的总时长
      this.setData({
        currentDuration:h+':'+s
      })
    }

  },
  // 进度条拖动
  sliderChange(e){
    let {musicCentinormal} = this.data
    let currentMusicTime = musicCentinormal * e.detail.value
    // 同步音乐播放到当前拖动的地方
    this.data.bgMusic.seek(currentMusicTime)
  },
  sliderChangeing(e){
    this.setData({
      currentTime:e.detail.value
    })
  },

  // 播放/暂停
  changePlay(e){
    let { isplay } = e.currentTarget.dataset
    this.setData({
      isPlay: isplay == 'true' ? true : false
    })
    if( isplay == 'true'){
      this.data.bgMusic.play()
    }else{
      this.data.bgMusic.pause()
    }
  },

  // 上一首/下一首音乐
  selectMusic(e){
    let { musicIndex,bgMusic } = this.data
    // 销毁
    bgMusic.destroy()
    let { action } = e.currentTarget.dataset
    action == 'next' ? ++musicIndex : --musicIndex
    Number.parseInt(musicIndex) < 1 ? musicIndex = 10 : ''
    Number.parseInt(musicIndex) > 10 ? musicIndex = 1 : ''
    this.setData({
      musicIndex,
      isPlay:true,
      currentTime:0,
      // 当前音乐的百分之一的时长
      firstPlayMusic:false,
      currentTime:0
    })
    
    this.editMusic(musicIndex)
  },

  onUnload(){
    this.data.bgMusic.destroy()
  }
})